Um enum no Java é uma maneira de criar um conjunto de valores fixos e predefinidos que representam um conceito específico no seu programa. Ele é
usado quando você sabe que algo pode ter apenas algumas opções possíveis.
Por exemplo, imagine que você está criando um sistema de pedidos de comida e quer representar os tamanhos possíveis de uma pizza: pequeno,
médio e grande. Em vez de usar strings ou números, você pode usar um enum para garantir que só esses valores sejam usados.
Como funciona
Um enum é um tipo especial de classe que define constantes (valores fixos). Esses valores são chamados de elementos ou constantes do
enum.
Arquivo: TamanhoPizza.java
// Definindo o enum
public enum TamanhoPizza {
PEQUENO,
MEDIO,
GRANDE
}
TamanhoPizza no seu código para representar os tamanhos possíveis:
Arquivo: App.java
public class App {
public static void main(String[] args) {
TamanhoPizza tamanho = TamanhoPizza.GRANDE;
// Verificar o tamanho
switch (tamanho) {
case PEQUENO:
System.out.println("Você escolheu uma pizza pequena.");
break;
case MEDIO:
System.out.println("Você escolheu uma pizza média.");
break;
case GRANDE:
System.out.println("Você escolheu uma pizza grande.");
break;
}
}
}
Por que usar enum?
Legibilidade: O código fica mais claro, porque você usa nomes significativos em vez de números ou strings.
Segurança: Como os valores são fixos, você evita erros como digitar "grande" errado (ex.: "grnade").
Organização: Facilita agrupar valores relacionados em um único lugar.
Facilidade de manutenção: Se precisar adicionar ou alterar um valor, basta ajustar o enum.
Para fazer a leitura do tamanho da pizza pelo teclado em Java, você pode usar a classe Scanner para capturar a entrada do usuário. A ideia é ler a
entrada como uma string e depois verificar qual valor foi digitado, convertendo para um valor do tipo enum.
import java.util.Scanner;
public class PedidoPizza {
// Definindo o enum como uma inner class
public enum TamanhoPizza {
PEQUENO,
MEDIO,
GRANDE
}
public static void main(String[] args) {
// Criando o Scanner para ler a entrada do usuário
Scanner scanner = new Scanner(System.in);
// Pedindo ao usuário para informar o tamanho da pizza
System.out.println("Digite o tamanho da pizza (PEQUENO, MEDIO, GRANDE):");
String entrada = scanner.nextLine().toUpperCase(); // Lê a entrada e converte para maiúsculo
// Tentando converter a entrada para um valor do enum
try {
TamanhoPizza tamanho = TamanhoPizza.valueOf(entrada); // Converte a string para o enum
System.out.println("Você escolheu uma pizza de tamanho: " + tamanho);
} catch (IllegalArgumentException e) {
System.out.println("Tamanho inválido. Por favor, escolha entre PEQUENO, MEDIO ou GRANDE.");
}
scanner.close(); // Fecha o scanner
}
}
No exemplo acima o enum foi definido como uma inner class (classe interna). Uma classe interna é uma classe declarada dentro de outra classe. Ela serve para organizar melhor o
código e para representar algo que só faz sentido existir junto da classe externa. Uma inner class não pode ser utilizada por outra classe que não seja a própria classe que a
definiu.